package com.yanyu.space.sys.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.yanyu.space.common.core.bean.db.PageEntity;
import com.yanyu.space.sys.bean.po.User;
import com.yanyu.space.sys.bean.vo.user.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 系统用户 业务接口
 *
 * @author yanyu
 */
public interface IUserService extends IService<User> {

    /**
     * 分页查询用户信息
     *
     * @param vo
     * @return
     */
    PageEntity<UserInfoVo> listPage(UserSearchVo vo);

    /**
     * 查询用户信息
     *
     * @param userId
     * @return
     */
    UserInfoVo getById(Long userId);

    /**
     * 新增用户
     */
    void add(UserAddVo vo);

    /**
     * 通过id更新用户信息
     *
     * @param vo
     */
    void updateById(UserUpdateVo vo);

    /**
     * 更新用户状态
     *
     * @param vo
     */
    void updateStatus(UserUpdateVo vo);

    /**
     * 重置密码
     *
     * @param vo
     */
    void resetPwd(UserResetPwdVo vo);

    /**
     * 删除用户
     *
     * @param ids
     */
    void deleteById(List<Long> ids);


    /**
     * 查询角色已授权用户列表
     *
     * @param vo
     * @return
     */
    PageEntity<User> listAllocated(UserAllocatedRoleVo vo);

    /**
     * 查询角色未授权用户列表
     *
     * @param vo
     * @return
     */
    PageEntity<User> listUnallocated(UserUnallocatedRoleVo vo);


    /**
     * @param userId
     * @param roleIds
     */
    void addAllocatedRole(Long userId, List<Long> roleIds);

    /**
     * 更新头像信息
     *
     * @param vo
     */
    void avatar(MultipartFile file);
}
